精通Linux系列七: 文件创建和编辑(为什么命令行VIM比idea更好用)
点击关注公众号,AI&编程干货及时送达
命令 | 含义 |
nano | 包含在流行的Linux发行版中的简单文本编辑器。 |
emacs | 自由软件基金会的文本编辑器。 |
vim | 文本编辑器,是Unix的vi 的扩展。 |
要在Linux中做得更多,你必须熟练掌握其中一个文本编辑器。主要的三个编辑器是nano,自由软件基金会的emacs和vim,后者是Unix编辑器vi的后继者。全面教授这些编辑器超出了本书的范围,但它们都有在线教程,我们在[表1]中列出了常见的操作。要编辑文件,运行以下任何一个命令:
→ nano 我的文件
→ emacs 我的文件
→ vim 我的文件
如果我的文件不存在,它会自动创建。
如果你需要与Microsoft Windows系统共享文件,Linux还有很好的用于编辑Microsoft Office文档的程序:LibreOffice(所有文档),abiword(仅Word),和gnumeric(仅Excel)。这些程序可能已经包含在你的发行版中,或者你可以通过网络搜索轻松找到它们。
快速创建文件
你可以使用touch
命令快速创建一个空文件(以便稍后编辑):
→ touch 新文件
或者使用echo -n
命令(参见[“文件属性”]):
→ echo -n > 新文件2
或者通过重定向程序的输出到新文件中写入数据(参见[“输入/输出重定向”]):
→ echo 任何内容 > 新文件3
默认编辑器
各种Linux程序在必要时会运行一个编辑器,通常默认的编辑器是nano或vim。例如,你的电子邮件程序可能调用一个编辑器来编写新消息,而less
在你键入“v”时会调用一个编辑器。但是,如果你想要一个不同的默认编辑器怎么办呢?将环境变量VISUAL
和EDITOR
设置为你选择的编辑器,例如:
→ EDITOR=emacs
→ VISUAL=emacs
→ export EDITOR VISUAL
由于不同的程序检查一个或另一个变量,所以需要这两个变量。如果你想要永久设定你的选择,就在你的*~/.bash_profile*启动文件中设置EDITOR
和VISUAL
。只要它接受文件名作为参数,任何程序都可以设为你的默认编辑器。
不论你如何设置这些变量,所有用户都应至少知道每个编辑器的基本命令,以防另一个程序突然在一个关键文件上运行一个编辑器。
nano
stdin stdout - file -- opt --help --version
nano [options] [files]
Nano是一个具有基本功能的文本编辑器。它默认包含在许多Linux发行版中,而更强大的编辑器如emacs和vim可能不包含。要调用nano,输入
→ nano
Nano的命令通常包括按住控制键和输入一个字母,如^o
保存和^x
退出。Nano在其编辑窗口底部显示常用命令,尽管其中一些词汇有点晦涩。(例如,nano使用“WriteOut”一词表示“保存文件。”)其他命令涉及元键,通常是Escape键或Alt键。Nano自己的文档用M-
(如M-F
表示“使用元键并键入F”)表示元键,所以我们也将使用这种表示方法。关于基本按键,参见[表1]。要获取更多文档,请访问http://nano-editor.org。
emacs
stdin stdout - file -- opt --help --version
emacs [options] [files]
emacs是一个极其强大的编辑环境,拥有数千个命令,加上一个完整的编程语言来定义你自己的编辑功能。要在新的X窗口中调用emacs,运行:
→ emacs
要在已存在的shell窗口中运行:
→ emacs -nw
现在,要调用内置的emacs教程,键入^h t
。
大多数emacs键击命令涉及控制键(如^F
)或元键,通常是Escape键或Alt键。emacs自己的文档用M-
(如M-F
表示“使用元键并键入F”)表示元键,所以我们也将使用这种表示方法。关于基本按键,参见[表1]。
vim
stdin stdout - file -- opt --help --version
vim [options] [files]
vim是旧的标准Unix编辑器vi的增强版本。要在新的X窗口中调用编辑器,运行:
→ gvim
要在已存在的shell窗口中运行:
→ vim
要运行vim教程,运行:
→ vimtutor
vim是一个基于模式的编辑器。它通常操作两种模式,插入和命令,你在编辑时必须在它们之间切换。插入模式是以通常的方式输入文本,而命令模式是用于删除文本、复制/粘贴和其他操作。关于正常模式中的基本按键,参见[表1]。
任务 | emacs | nano | vim |
键入文本 | 直接键入 | 直接键入 | 如果需要,切换到插入模式,通过键入i ,然后键入任何文本 |
保存并退出 | ^x^s 然后 ^x^c | ^o 然后 ^x | :wq |
退出而不保存 | ^x^c 在被问到是否保存缓冲区时选择“否” | ^x 在被问到是否保存时选择“否” | :q! |
保存 | ^x^s | ^o | :w |
另存为 | ^x^w | ^o , 然后输入一个文件名 | :w 文件名 |
撤销 | ^/ 或 ^x u | M-u | u |
挂起编辑器(不在X窗口中) | ^z | ^z | ^z |
切换到插入模式 | (N/A) | (N/A) | i |
切换到命令模式 | (N/A) | (N/A) | ESC |
切换到命令行模式 | M-x | (N/A) | : |
中止正在进行的命令 | ^g | ^c | ESC |
向前移动 | ^f 或 右箭头 | ^f 或 右箭头 | l 或 右箭头 |
向后移动 | ^b 或 左箭头 | ^b 或 左箭头 | h 或 左箭头 |
向上移动 | ^p 或 上箭头 | ^p 或 上箭头 | k 或 上箭头 |
向下移动 | ^n 或 下箭头 | ^n 或 下箭头 | j 或 下箭头 |
移动到下一个单词 | M-f | ^SPACEBAR | w |
移动到上一个单词 | M-b | M-SPACEBAR | b |
移动到行的开头 | ^a | ^a | 0 |
移动到行的末尾 | ^e | ^e | $ |
向下移动一个屏幕 | ^v | ^v | ^f |
向上移动一个屏幕 | M-v | ^y | ^b |
移动到文档的开头 | M-< | M-\ | gg |
移动到文档的末尾 | M-> | M-/ | G |
删除下一个字符 | ^d | ^d | x |
删除上一个字符 | BACKSPACE | BACKSPACE | X |
删除下一个单词 | M-d | (N/A) | de |
删除上一个单词 | M-BACKSPACE | (N/A) | db |
删除当前行 | ^a^k | ^k | dd |
删除至行末 | ^k | ... | D |
定义区域(输入此快捷键以标记区域的开始,然后移动光标到所需区域的末尾) | ^SPACEBAR | ^^ (control caret) | v |
剪切区域 | ^w | ^k | d |
复制区域 | M-w | M-^ | y |
粘贴区域 | ^y | ^u | p |
获取帮助 | ^h | ^g | :help |
查看手册 | ^h i | ^g | :help |
推荐阅读
你好,我是拾叁,7年开发老司机、互联网两年外企5年。怼得过阿三老美,也被PR comments搞崩溃过。这些年我打过工,创过业,接过私活,也混过upwork。赚过钱也亏过钱。一路过来,给我最深的感受就是不管学什么,一定要不断学习。只要你能坚持下来,就很容易实现弯道超车!所以,不要问我现在干什么是否来得及。如果你还没什么方向,可以先关注我,这里会经常分享一些前沿资讯和编程知识,帮你积累弯道超车的资本。